package com.dongliusuo.orangeforms.webadmin.app.vo;

import com.dongliusuo.orangeforms.common.core.base.vo.BaseVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.Map;
import java.util.List;

/**
 * 客户主数据VO视图对象。
 *
 * @author DongLiusuo
 * @date 2025-01-08
 */
@Schema(description = "客户主数据VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class CustomerInfoVo extends BaseVo {

    /**
     * 唯一标识符。
     */
    @Schema(description = "唯一标识符")
    private Long customerId;

    /**
     * 名。
     */
    @Schema(description = "名")
    private String firstName;

    /**
     * 姓。
     */
    @Schema(description = "姓")
    private String lastName;

    /**
     * 电子邮件。
     */
    @Schema(description = "电子邮件")
    private String email;

    /**
     * 电话号码。
     */
    @Schema(description = "电话号码")
    private String phoneNumber;

    /**
     * 性别。
     */
    @Schema(description = "性别")
    private String gender;

    /**
     * 出生日期。
     */
    @Schema(description = "出生日期")
    private Date birthDate;

    /**
     * 证件类型。
     */
    @Schema(description = "证件类型")
    private String idType;

    /**
     * 证件号码。
     */
    @Schema(description = "证件号码")
    private String idNumber;

    /**
     * 国籍。
     */
    @Schema(description = "国籍")
    private String nationality;

    /**
     * 省行政区划代码。
     */
    @Schema(description = "省行政区划代码")
    private String provinceCode;

    /**
     * 市行政区划代码。
     */
    @Schema(description = "市行政区划代码")
    private String cityCode;

    /**
     * 区行政区划代码。
     */
    @Schema(description = "区行政区划代码")
    private String districtCode;

    /**
     * 详细地址1。
     */
    @Schema(description = "详细地址1")
    private String detailedAddress1;

    /**
     * 详细地址2。
     */
    @Schema(description = "详细地址2")
    private String detailedAddress2;

    /**
     * 完整地址。
     */
    @Schema(description = "完整地址")
    private String fullAddress;

    /**
     * 职业。
     */
    @Schema(description = "职业")
    private String occupation;

    /**
     * 公司名称。
     */
    @Schema(description = "公司名称")
    private String companyName;

    /**
     * 收入范围。
     */
    @Schema(description = "收入范围")
    private String incomeRange;

    /**
     * 紧急联系人姓名。
     */
    @Schema(description = "紧急联系人姓名")
    private String emergencyContactName;

    /**
     * 紧急联系人电话。
     */
    @Schema(description = "紧急联系人电话")
    private String emergencyContactPhone;

    /**
     * 注册日期。
     */
    @Schema(description = "注册日期")
    private Date registrationDate;

    /**
     * 最后登录时间。
     */
    @Schema(description = "最后登录时间")
    private Date lastLogin;

    /**
     * 用户状态。
     */
    @Schema(description = "用户状态")
    private String status;

    /**
     * 其他备注信息。
     */
    @Schema(description = "其他备注信息")
    private String remark;

    /**
     * CustomerAccount 的一对多关联表数据对象。数据对应类型为CustomerAccount。
     */
    @Schema(description = "CustomerAccount 的一对多关联表数据对象。数据对应类型为CustomerAccount")
    private List<Map<String, Object>> customerAccountList;

    /**
     * provinceCode 字典关联数据。
     */
    @Schema(description = "provinceCode 字典关联数据")
    private Map<String, Object> provinceCodeDictMap;

    /**
     * cityCode 字典关联数据。
     */
    @Schema(description = "cityCode 字典关联数据")
    private Map<String, Object> cityCodeDictMap;

    /**
     * districtCode 字典关联数据。
     */
    @Schema(description = "districtCode 字典关联数据")
    private Map<String, Object> districtCodeDictMap;

    /**
     * gender 常量字典关联数据。
     */
    @Schema(description = "gender 常量字典关联数据")
    private Map<String, Object> genderDictMap;

    /**
     * idType 常量字典关联数据。
     */
    @Schema(description = "idType 常量字典关联数据")
    private Map<String, Object> idTypeDictMap;

    /**
     * nationality 全局字典关联数据。
     */
    @Schema(description = "nationality 全局字典关联数据")
    private Map<String, Object> nationalityDictMap;

    /**
     * incomeRange 全局字典关联数据。
     */
    @Schema(description = "incomeRange 全局字典关联数据")
    private Map<String, Object> incomeRangeDictMap;
}
